Go性能分析工具:pprof 您所在的位置:网站首页 go tool pprof trace Go性能分析工具:pprof

Go性能分析工具:pprof

#Go性能分析工具:pprof| 来源: 网络整理| 查看: 265

1. 简介

pprof 是profile(画像)的缩写,是Go中很常用的获取数据、分析数据的工具。pprof有很多优点:可视化,除此之外,go原生,简单方便,很容易上手。

​​go tool pprof ​​​是对应的命令行指令。它的源数据既可以是一个http地址,也可以是已经获取到的profile文件。使用​​go tool pprof​​命令时,既可以采用交互式终端,也可以采用web进行可视化分析,除此之外可以直接将数据生成svg图片,进行静态的分析。

pprof可以分析以下9中数据:

Go性能分析工具:pprof_golang

这9项对应的内容如下:

Profile项

说明

详情

allocs

内存分配

从程序启动开始,分配的全部内存

block

阻塞

导致同步原语阻塞的堆栈跟踪

cmdline

命令行调用

当前程序的命令行调用

goroutine

gorouting

所有当前 goroutine 的堆栈跟踪

heap

活动对象的内存分配抽样。您可以指定 gc 参数以在获取堆样本之前运行 GC

mutex

互斥锁

争用互斥锁持有者的堆栈跟踪

profile

CPU分析

CPU 使用率分析。可以在url中,通过seconds指定持续时间(默认30s)。获取配置文件后,使用 go tool pprof 命令分析CPU使用情况

threadcreate

线程创建

导致创建新操作系统线程的堆栈跟踪

trace

追踪

当前程序的执行轨迹。可以在url中,通过seconds指定持续时间(默认30s)。获取跟踪文件后,使用 go tool trace 命令调查跟踪

在性能分析时,使用最多有三种:内存分析(allocs,heap),CPU分析(profile), 阻塞分析(block), 互斥锁分析(mutex)。

下面详细介绍pprof的使用方法。

2. 数据获取

pprof的应用场景主要分为两种:

服务型应用,例如web服务器等各种服务类型端的性能分析工具型应用,例如一些命令行工具,执行完毕后直接退出的应用

针对这两种不同的应用场景,pprof有不同的用法。下面做一个详细的介绍

2.1 工具型应用

????工具型应用使用runtime/pprof库,将CPU、内存信息手动写到文件中!!!

package main

import ( "fmt" "os" "runtime/pprof")

func main() {

cpuProfile, err := os.Create("./pprof/cpu_profile") if err != nil { fmt.Printf("创建文件失败:%s", err.Error()) return } defer cpuProfile.Close()

memProfile, err := os.Create("./pprof/mem_profile") if err != nil { fmt.Printf("创建文件失败:%s", err.Error()) return } defer memProfile.Close() //采集CPU信息 pprof.StartCPUProfile(cpuProfile) defer pprof.StopCPUProfile()

//采集内存信息 pprof.WriteHeapProfile(memProfile)

for i := 0; i



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有